import java.util.Stack;  // 导入Java的Stack类，用于实现栈数据结构

public class BracketMatch {
    // 定义一个公共方法，用于检查输入字符串中的括号是否匹配
    public boolean isValid(String inputString) {
        // 创建一个字符类型的栈，用于存储遇到的左括号
        Stack<Character> bracketStack = new Stack<>();

        // 遍历输入字符串的每个字符
        for (int i = 0; i < inputString.length(); i++) {
            // 获取当前字符
            char currentChar = inputString.charAt(i);

            // 检查当前字符是否是左括号之一
            if (currentChar == '(' || currentChar == '{' || currentChar == '[') {
                // 如果是左括号，将其压入栈中
                bracketStack.push(currentChar);
            } else {
                // 如果是右括号，先检查栈是否为空
                if (bracketStack.empty()) {
                    // 栈为空意味着没有对应的左括号，返回false
                    return false;
                }

                // 获取栈顶的左括号但不移除
                char topBracket = bracketStack.peek();
                // 检查当前右括号是否与栈顶的左括号匹配
                if ((topBracket == '(' && currentChar == ')') ||
                        (topBracket == '[' && currentChar == ']') ||
                        (topBracket == '{' && currentChar == '}')) {
                    // 如果匹配，弹出栈顶的左括号
                    bracketStack.pop();
                } else {
                    // 如果不匹配，返回false
                    return false;
                }
            }
        }

        // 遍历完成后，检查栈是否为空
        if (!bracketStack.empty()) {
            // 栈不为空意味着有未匹配的左括号，返回false
            return false;
        }

        // 所有检查都通过，返回true
        return true;
    }
}